
function XX = Cr3bp_Rot2Iner3D(tt , xx , pc , mu)
%
% 圆型限制性三体模型（CR3BP）坐标系转换
% 1) rotating -> inertial
% 2) 3D
%
% 时间：2024年06月03日
% 作者：张晨
% 单位：CSU
% 邮箱：chenzhang@csu.ac.cn
%%%%%%%%%%%%%%%%%%%%%%%

xx3_rot = xx;

% 计算旋转矩阵
alpha = tt;
C = [cos(alpha) , -sin(alpha) , 0;
    sin(alpha) , cos(alpha) , 0;
    0 , 0 , 1];
dC = [-sin(alpha) , -cos(alpha) , 0;
    cos(alpha) , -sin(alpha) , 0;
    0 , 0 , 0];
TMtx = [C , zeros(3); dC , C];

% 先Rot相对P1/P2，再转
xx1_rot = [-mu ; 0 ; 0 ; 0 ; 0 ; 0];
xx2_rot = [(1 - mu) ; 0 ; 0 ; 0 ; 0 ; 0];

if strcmp(pc , 'p1')

    xx13_rot = xx3_rot - xx1_rot;
    XX13_ini = TMtx * xx13_rot;

    XX = XX13_ini;

elseif strcmp(pc , 'p2')

    xx23_rot = xx3_rot - xx2_rot;
    XX23_ini = TMtx * xx23_rot;

    XX = XX23_ini;

else

    fprintf('wrong!')
    xx = [];
    return;

end

end
